package com.mazaiting.spring.bean;

/***
 * bean 的定义
 * @author mazaiting
 * @datetime 2021/11/18 13:34  
 */
public interface BeanDefinition {

    /**
     * 单例
     */
    String SCOPE_SINGLETON = "singleton";
    /**
     * 原型
     */
    String SCOPE_PROTOTYPE = "prototype";

    /**
     * 获取类字节码
     * @return 类字节码
     */
    Class<?> getClazz();

    /**
     * 设置作用域
     * @see #SCOPE_SINGLETON
     * @see #SCOPE_PROTOTYPE
     */
    void setScope(String scope);

    /**
     * 返回作用域
     */
    String getScope();

    /**
     * 是否单例
     * @see #SCOPE_SINGLETON
     */
    boolean isSingleton();

    /**
     * 是否原型
     * @see #SCOPE_PROTOTYPE
     */
    boolean isPrototype();
}
